package cn.com.acca.ma.dao;

import java.sql.SQLException;
import java.util.List;

public interface ProjectDao extends BaseDao {
	/**
	 * 收集数据库统计信息
	 */
	void gatherDatabaseStatistics();

	/**
	 * 查询数据库对象类型列表
	 * @return
	 */
	List<String> findDatabaseTypeList();

	/**
	 * 根据数据库对象类型，查询对象名称列表
	 * @param objectType
	 * @return
	 */
	List<String> findObjectNameListByObjectType(String objectType);

	/**
	 * 删除TYPE
	 * @param type
	 */
	void deleteType(String type);

	/**
	 * 删除PACKAGE
	 * @param packageName
	 */
	void deletePackage(String packageName);

	/**
	 * 删除SEQUENCE
	 * @param sequence
	 * @throws Exception
	 */
	void deleteSequence(String sequence) throws Exception;

	/**
	 * 删除TABLE
	 * @param table
	 */
	void deleteTable(String table);

	/**
	 * 删除FUNCTION
	 * @param function
	 */
	void deleteFunction(String function);

	/**
	 * 删除PROCEDURE
	 * @param procedure
	 */
	void deleteProcedure(String procedure);

	/**
	 * 根据数据库对象类型和名称，查询定义
	 * @param objectType
	 * @param objectName
	 * @return
	 */
	String findDefinitionByObjectTypeAndObjectName(String objectType, String objectName) throws SQLException;

	/**
	 * 查询全部序列名称
	 * @return
	 */
	List<String> findAllSequenceName();

	/**
	 * 执行sql语句
	 * @param sql
	 */
	void executeSql(String sql) throws Exception;
}
